package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;

import java.util.List;

/**
 * @ClassName :  savePublish
 * @Author : Tenebrous
 * @Date: 2020/12/12 20:02
 * @Description : 发布动态
 */
public interface MomentsApi {

    /**
     * 发布朋友圈
     * @param publish           动态信息
     * @return                  主键id
     */
    String savePublish(Publish publish);

    /**
     *  查询朋友圈
     * @param userId            登录者id
     * @param page              页数
     * @param pageSize          页大小
     * @return                  分页信息
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 点赞功能
     * @param userId            登录者id
     * @param publishId         朋友圈动态id
     * @return                  布尔值
     */
    boolean saveLikeComment(Long userId, String publishId);

    /**
     * 取消点赞
     * @param userId            登录者id
     * @param publishId         朋友圈动态id
     * @param commentType       评论类型
     * @return                  布尔值
     */
    boolean removeComment(Long userId, String publishId, Integer commentType);

    /**
     * 喜欢功能
     * @param userId            登录者id
     * @param publishId         朋友圈动态id
     * @return                  布尔值
     */
    boolean saveLoveComment(Long userId, String publishId);

    /**
     * 发布评论
     * @param userId            登录者id
     * @param publishId         朋友圈动态id
     * @param type              评论类型
     * @param content           评论内容
     * @return                  布尔值
     */
    boolean saveComment(Long userId, String publishId, Integer type, String content);

    /**
     * 查询评论数量
     * @param publishId           登录者id
     * @param type              评论类型
     * @return                  布尔值
     */
    Long queryCommentCount(String publishId, Integer type);

    /**
     * 根据id查询动态信息
     * @param publishId             朋友圈动态id
     * @return                      动态信息
     */
    Publish queryPublishById(String publishId);

    /**
     * 查询评论
     * @param publishId             动态id
     * @param page                  页码
     * @param pageSize              每页数量
     * @return                      分页参数
     */
    PageInfo<Comment> queryCommentList(String publishId, Integer page, Integer pageSize);

    /**
     * 查询用户的评论数据
     * @param userId        用户id
     * @param type          评论类型
     * @param page          页码
     * @param pageSize      每页条数
     * @return              分页参数
     */
    PageInfo<Comment> queryCommentListByUser(Long userId, Integer type, Integer page, Integer pageSize);

    /**
     * 根据pid批量查询数据
     * @param pids                  朋友圈动态id
     * @return                      动态信息
     */
    List<Publish> queryPublishByPids(List<Long> pids);

    /**
     * 查询相册表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryAlbumList(Long userId, Integer page, Integer pageSize);

}
